{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Pandas CheatSheet"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [],
   "source": [
    "data={\n",
    "    'name': ['Alice', 'Bob', 'Charles', 'David', 'Eric'],\n",
    "    'year': [2017, 2017, 2017, 2017, 2017], \n",
    "    'salary': [40000, 24000, 31000, 20000, 30000],\n",
    "    'pair':[{'a':1},{'a':2},{'a':3},{'a':4},{'a':5}]\n",
    "}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>name</th>\n",
       "      <th>pair</th>\n",
       "      <th>salary</th>\n",
       "      <th>year</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Alice</td>\n",
       "      <td>{'a': 1}</td>\n",
       "      <td>40000</td>\n",
       "      <td>2017</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Bob</td>\n",
       "      <td>{'a': 2}</td>\n",
       "      <td>24000</td>\n",
       "      <td>2017</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Charles</td>\n",
       "      <td>{'a': 3}</td>\n",
       "      <td>31000</td>\n",
       "      <td>2017</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>David</td>\n",
       "      <td>{'a': 4}</td>\n",
       "      <td>20000</td>\n",
       "      <td>2017</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>Eric</td>\n",
       "      <td>{'a': 5}</td>\n",
       "      <td>30000</td>\n",
       "      <td>2017</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      name      pair  salary  year\n",
       "0    Alice  {'a': 1}   40000  2017\n",
       "1      Bob  {'a': 2}   24000  2017\n",
       "2  Charles  {'a': 3}   31000  2017\n",
       "3    David  {'a': 4}   20000  2017\n",
       "4     Eric  {'a': 5}   30000  2017"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "d=pd.DataFrame(data)\n",
    "d"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0    {'a': 1}\n",
       "1    {'a': 2}\n",
       "2    {'a': 3}\n",
       "3    {'a': 4}\n",
       "4    {'a': 5}\n",
       "Name: pair, dtype: object"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "d.pair"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "pandas.core.series.Series"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "type(d.pair)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[{'a': 1}, {'a': 2}, {'a': 3}, {'a': 4}, {'a': 5}]"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "d.pair.tolist()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "toc-hr-collapsed": true
   },
   "source": [
    "## 行操作\n",
    "### 薪水大于30000的人都有谁？"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>name</th>\n",
       "      <th>pair</th>\n",
       "      <th>salary</th>\n",
       "      <th>year</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Alice</td>\n",
       "      <td>{'a': 1}</td>\n",
       "      <td>40000</td>\n",
       "      <td>2017</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Charles</td>\n",
       "      <td>{'a': 3}</td>\n",
       "      <td>31000</td>\n",
       "      <td>2017</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      name      pair  salary  year\n",
       "0    Alice  {'a': 1}   40000  2017\n",
       "2  Charles  {'a': 3}   31000  2017"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "d.query('salary>30000')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0     True\n",
       "1    False\n",
       "2     True\n",
       "3    False\n",
       "4    False\n",
       "Name: salary, dtype: bool"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "d.salary>30000"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>name</th>\n",
       "      <th>pair</th>\n",
       "      <th>salary</th>\n",
       "      <th>year</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Alice</td>\n",
       "      <td>{'a': 1}</td>\n",
       "      <td>40000</td>\n",
       "      <td>2017</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Charles</td>\n",
       "      <td>{'a': 3}</td>\n",
       "      <td>31000</td>\n",
       "      <td>2017</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      name      pair  salary  year\n",
       "0    Alice  {'a': 1}   40000  2017\n",
       "2  Charles  {'a': 3}   31000  2017"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 筛选符合条件\n",
    "d[d.salary>30000]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Eric的信息是什么？"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>name</th>\n",
       "      <th>pair</th>\n",
       "      <th>salary</th>\n",
       "      <th>year</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>Eric</td>\n",
       "      <td>{'a': 5}</td>\n",
       "      <td>30000</td>\n",
       "      <td>2017</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   name      pair  salary  year\n",
       "4  Eric  {'a': 5}   30000  2017"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Pandas如何进行查询？\n",
    "d.query(\"name=='Eric'\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>name</th>\n",
       "      <th>pair</th>\n",
       "      <th>salary</th>\n",
       "      <th>year</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>Eric</td>\n",
       "      <td>{'a': 5}</td>\n",
       "      <td>30000</td>\n",
       "      <td>2017</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   name      pair  salary  year\n",
       "4  Eric  {'a': 5}   30000  2017"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "d[d.name=='Eric']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>name</th>\n",
       "      <th>pair</th>\n",
       "      <th>salary</th>\n",
       "      <th>year</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>Eric</td>\n",
       "      <td>{'a': 5}</td>\n",
       "      <td>30000</td>\n",
       "      <td>2017</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   name      pair  salary  year\n",
       "4  Eric  {'a': 5}   30000  2017"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "d.loc[d.name=='Eric']"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 联合查找：名叫Bob且薪水大于20000"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>name</th>\n",
       "      <th>pair</th>\n",
       "      <th>salary</th>\n",
       "      <th>year</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Bob</td>\n",
       "      <td>{'a': 2}</td>\n",
       "      <td>24000</td>\n",
       "      <td>2017</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  name      pair  salary  year\n",
       "1  Bob  {'a': 2}   24000  2017"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "d.query(\"name=='Bob' and salary>20000\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 列操作\n",
    "d.filter\n",
    "\n",
    "在SQL中经常使用的 SELECT name,year,salary from table 是对二阶张量的行列进行赛选"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>name</th>\n",
       "      <th>salary</th>\n",
       "      <th>pair</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Alice</td>\n",
       "      <td>40000</td>\n",
       "      <td>{'a': 1}</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Bob</td>\n",
       "      <td>24000</td>\n",
       "      <td>{'a': 2}</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Charles</td>\n",
       "      <td>31000</td>\n",
       "      <td>{'a': 3}</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>David</td>\n",
       "      <td>20000</td>\n",
       "      <td>{'a': 4}</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>Eric</td>\n",
       "      <td>30000</td>\n",
       "      <td>{'a': 5}</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      name  salary      pair\n",
       "0    Alice   40000  {'a': 1}\n",
       "1      Bob   24000  {'a': 2}\n",
       "2  Charles   31000  {'a': 3}\n",
       "3    David   20000  {'a': 4}\n",
       "4     Eric   30000  {'a': 5}"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "d.filter(items=['name','salary','pair'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>name</th>\n",
       "      <th>salary</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Alice</td>\n",
       "      <td>40000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Bob</td>\n",
       "      <td>24000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Charles</td>\n",
       "      <td>31000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>David</td>\n",
       "      <td>20000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>Eric</td>\n",
       "      <td>30000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      name  salary\n",
       "0    Alice   40000\n",
       "1      Bob   24000\n",
       "2  Charles   31000\n",
       "3    David   20000\n",
       "4     Eric   30000"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 简化写法\n",
    "d[['name','salary']]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 模糊查找"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>name</th>\n",
       "      <th>pair</th>\n",
       "      <th>salary</th>\n",
       "      <th>year</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Charles</td>\n",
       "      <td>{'a': 3}</td>\n",
       "      <td>31000</td>\n",
       "      <td>2017</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      name      pair  salary  year\n",
       "2  Charles  {'a': 3}   31000  2017"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "d.filter(like='2', axis=0) # 模糊查找行"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>year</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2017</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2017</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2017</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2017</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>2017</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   year\n",
       "0  2017\n",
       "1  2017\n",
       "2  2017\n",
       "3  2017\n",
       "4  2017"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "d.filter(like='ea', axis=1) # 模糊查找列"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "toc-hr-collapsed": true
   },
   "source": [
    "## 分组\n",
    "聚类、分段预测"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [],
   "source": [
    "df1 = pd.DataFrame({\n",
    "    \"Name\" : [\"Alice\", \"Ada\", \"Mallory\", \"Mallory\", \"Billy\" , \"Mallory\"],\n",
    "    \"City\" : [\"Sydney\", \"Sydney\", \"Paris\", \"Sydney\", \"Sydney\", \"Paris\"]\n",
    "})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>City</th>\n",
       "      <th>Name</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Sydney</td>\n",
       "      <td>Alice</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Sydney</td>\n",
       "      <td>Ada</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Paris</td>\n",
       "      <td>Mallory</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Sydney</td>\n",
       "      <td>Mallory</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>Sydney</td>\n",
       "      <td>Billy</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>Paris</td>\n",
       "      <td>Mallory</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "     City     Name\n",
       "0  Sydney    Alice\n",
       "1  Sydney      Ada\n",
       "2   Paris  Mallory\n",
       "3  Sydney  Mallory\n",
       "4  Sydney    Billy\n",
       "5   Paris  Mallory"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df1"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 各个城市各有多少人"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Name</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>City</th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Paris</th>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Sydney</th>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "        Name\n",
       "City        \n",
       "Paris      2\n",
       "Sydney     4"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df1.groupby(['City']).count()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 统计量分析\n",
    "Numerical 变量的数据分析"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>salary</th>\n",
       "      <th>year</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>5.000000</td>\n",
       "      <td>5.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>29000.000000</td>\n",
       "      <td>2017.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>7615.773106</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>20000.000000</td>\n",
       "      <td>2017.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>24000.000000</td>\n",
       "      <td>2017.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>30000.000000</td>\n",
       "      <td>2017.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>31000.000000</td>\n",
       "      <td>2017.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>40000.000000</td>\n",
       "      <td>2017.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "             salary    year\n",
       "count      5.000000     5.0\n",
       "mean   29000.000000  2017.0\n",
       "std     7615.773106     0.0\n",
       "min    20000.000000  2017.0\n",
       "25%    24000.000000  2017.0\n",
       "50%    30000.000000  2017.0\n",
       "75%    31000.000000  2017.0\n",
       "max    40000.000000  2017.0"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "d.describe()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "toc-hr-collapsed": false
   },
   "source": [
    "## 统计函数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "metadata": {},
   "outputs": [],
   "source": [
    "df2 = pd.DataFrame({\n",
    "    'key1':['a', 'a', 'b', 'b', 'a'],\n",
    "    'key2':['one', 'two', 'one', 'two', 'one'],\n",
    "    'data1':np.random.randn(5),\n",
    "    'data2':np.random.randn(5)\n",
    "})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>data1</th>\n",
       "      <th>data2</th>\n",
       "      <th>key1</th>\n",
       "      <th>key2</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>-0.453110</td>\n",
       "      <td>2.338225</td>\n",
       "      <td>a</td>\n",
       "      <td>one</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>-1.918583</td>\n",
       "      <td>1.469552</td>\n",
       "      <td>a</td>\n",
       "      <td>two</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.338384</td>\n",
       "      <td>-0.387233</td>\n",
       "      <td>b</td>\n",
       "      <td>one</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>-0.981380</td>\n",
       "      <td>1.713030</td>\n",
       "      <td>b</td>\n",
       "      <td>two</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>-0.243838</td>\n",
       "      <td>0.547075</td>\n",
       "      <td>a</td>\n",
       "      <td>one</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      data1     data2 key1 key2\n",
       "0 -0.453110  2.338225    a  one\n",
       "1 -1.918583  1.469552    a  two\n",
       "2  0.338384 -0.387233    b  one\n",
       "3 -0.981380  1.713030    b  two\n",
       "4 -0.243838  0.547075    a  one"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df2"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 基于属性key1的类型a和b各自的均值是多少？\n",
    "\n",
    "包括data1和data2但不包括key2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>data1</th>\n",
       "      <th>data2</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>key1</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>a</th>\n",
       "      <td>-0.871843</td>\n",
       "      <td>1.451617</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>b</th>\n",
       "      <td>-0.321498</td>\n",
       "      <td>0.662898</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "         data1     data2\n",
       "key1                    \n",
       "a    -0.871843  1.451617\n",
       "b    -0.321498  0.662898"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 没有k2,因为它不是连续型变量\n",
    "df2.groupby(['key1']).mean()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "联合Group：'a-one','a-two','b-one','b-two'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th>data1</th>\n",
       "      <th>data2</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>key1</th>\n",
       "      <th>key2</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th rowspan=\"2\" valign=\"top\">a</th>\n",
       "      <th>one</th>\n",
       "      <td>-0.348474</td>\n",
       "      <td>1.442650</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>two</th>\n",
       "      <td>-1.918583</td>\n",
       "      <td>1.469552</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"2\" valign=\"top\">b</th>\n",
       "      <th>one</th>\n",
       "      <td>0.338384</td>\n",
       "      <td>-0.387233</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>two</th>\n",
       "      <td>-0.981380</td>\n",
       "      <td>1.713030</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "              data1     data2\n",
       "key1 key2                    \n",
       "a    one  -0.348474  1.442650\n",
       "     two  -1.918583  1.469552\n",
       "b    one   0.338384 -0.387233\n",
       "     two  -0.981380  1.713030"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 同时对若干个离散数据 进行分组\n",
    "df2.groupby(['key1', 'key2']).mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "data1    5\n",
       "data2    5\n",
       "key1     5\n",
       "key2     5\n",
       "dtype: int64"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df2.count() # 每一列中的个数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>data1</th>\n",
       "      <th>data2</th>\n",
       "      <th>key2</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>key1</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>a</th>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>b</th>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      data1  data2  key2\n",
       "key1                    \n",
       "a         3      3     3\n",
       "b         2      2     2"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df2.groupby(['key1']).count() "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th>data1</th>\n",
       "      <th>data2</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>key1</th>\n",
       "      <th>key2</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th rowspan=\"2\" valign=\"top\">a</th>\n",
       "      <th>one</th>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>two</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"2\" valign=\"top\">b</th>\n",
       "      <th>one</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>two</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "           data1  data2\n",
       "key1 key2              \n",
       "a    one       2      2\n",
       "     two       1      1\n",
       "b    one       1      1\n",
       "     two       1      1"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df2.groupby(['key1', 'key2']).count() "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 排序"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>data1</th>\n",
       "      <th>data2</th>\n",
       "      <th>key1</th>\n",
       "      <th>key2</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>-0.453110</td>\n",
       "      <td>2.338225</td>\n",
       "      <td>a</td>\n",
       "      <td>one</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>-1.918583</td>\n",
       "      <td>1.469552</td>\n",
       "      <td>a</td>\n",
       "      <td>two</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.338384</td>\n",
       "      <td>-0.387233</td>\n",
       "      <td>b</td>\n",
       "      <td>one</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>-0.981380</td>\n",
       "      <td>1.713030</td>\n",
       "      <td>b</td>\n",
       "      <td>two</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>-0.243838</td>\n",
       "      <td>0.547075</td>\n",
       "      <td>a</td>\n",
       "      <td>one</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      data1     data2 key1 key2\n",
       "0 -0.453110  2.338225    a  one\n",
       "1 -1.918583  1.469552    a  two\n",
       "2  0.338384 -0.387233    b  one\n",
       "3 -0.981380  1.713030    b  two\n",
       "4 -0.243838  0.547075    a  one"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2   -0.387233\n",
       "4    0.547075\n",
       "1    1.469552\n",
       "3    1.713030\n",
       "0    2.338225\n",
       "Name: data2, dtype: float64"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df2.data2.sort_values() # 对列进行排序"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>data1</th>\n",
       "      <th>data2</th>\n",
       "      <th>key1</th>\n",
       "      <th>key2</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>-1.491823</td>\n",
       "      <td>0.084684</td>\n",
       "      <td>a</td>\n",
       "      <td>one</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.950192</td>\n",
       "      <td>-0.235840</td>\n",
       "      <td>b</td>\n",
       "      <td>one</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>-0.608515</td>\n",
       "      <td>0.970593</td>\n",
       "      <td>a</td>\n",
       "      <td>one</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>-2.103263</td>\n",
       "      <td>0.432440</td>\n",
       "      <td>a</td>\n",
       "      <td>two</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.493304</td>\n",
       "      <td>-0.907539</td>\n",
       "      <td>b</td>\n",
       "      <td>two</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      data1     data2 key1 key2\n",
       "0 -1.491823  0.084684    a  one\n",
       "2  0.950192 -0.235840    b  one\n",
       "4 -0.608515  0.970593    a  one\n",
       "1 -2.103263  0.432440    a  two\n",
       "3  0.493304 -0.907539    b  two"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df2.sort_values(by='key2') # 整张表按某1列的数值进行排序"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 多属性排序"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>data1</th>\n",
       "      <th>data2</th>\n",
       "      <th>key1</th>\n",
       "      <th>key2</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>-2.103263</td>\n",
       "      <td>0.432440</td>\n",
       "      <td>a</td>\n",
       "      <td>two</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>-1.491823</td>\n",
       "      <td>0.084684</td>\n",
       "      <td>a</td>\n",
       "      <td>one</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>-0.608515</td>\n",
       "      <td>0.970593</td>\n",
       "      <td>a</td>\n",
       "      <td>one</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.493304</td>\n",
       "      <td>-0.907539</td>\n",
       "      <td>b</td>\n",
       "      <td>two</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.950192</td>\n",
       "      <td>-0.235840</td>\n",
       "      <td>b</td>\n",
       "      <td>one</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      data1     data2 key1 key2\n",
       "1 -2.103263  0.432440    a  two\n",
       "0 -1.491823  0.084684    a  one\n",
       "4 -0.608515  0.970593    a  one\n",
       "3  0.493304 -0.907539    b  two\n",
       "2  0.950192 -0.235840    b  one"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df2.sort_values(by=['key1','data1']) # 相同再按后面排序"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>data1</th>\n",
       "      <th>data2</th>\n",
       "      <th>key1</th>\n",
       "      <th>key2</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>-1.918583</td>\n",
       "      <td>1.469552</td>\n",
       "      <td>a</td>\n",
       "      <td>two</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>-0.981380</td>\n",
       "      <td>1.713030</td>\n",
       "      <td>b</td>\n",
       "      <td>two</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>-0.453110</td>\n",
       "      <td>2.338225</td>\n",
       "      <td>a</td>\n",
       "      <td>one</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.338384</td>\n",
       "      <td>-0.387233</td>\n",
       "      <td>b</td>\n",
       "      <td>one</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>-0.243838</td>\n",
       "      <td>0.547075</td>\n",
       "      <td>a</td>\n",
       "      <td>one</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      data1     data2 key1 key2\n",
       "1 -1.918583  1.469552    a  two\n",
       "3 -0.981380  1.713030    b  two\n",
       "0 -0.453110  2.338225    a  one\n",
       "2  0.338384 -0.387233    b  one\n",
       "4 -0.243838  0.547075    a  one"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df2.sort_values(by=['key2'], ascending=False) # 整张表按某1列数值进行排序"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# DataFrame对数据的增删查改"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 如何选择某1行"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "data1   -0.45311\n",
       "data2    2.33823\n",
       "key1           a\n",
       "key2         one\n",
       "Name: 0, dtype: object"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    " df2.iloc[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'a'"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df2.iloc[0]['key1']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'a'"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df2.loc[0].key1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>data1</th>\n",
       "      <th>data2</th>\n",
       "      <th>key1</th>\n",
       "      <th>key2</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>-0.453110</td>\n",
       "      <td>2.338225</td>\n",
       "      <td>a</td>\n",
       "      <td>one</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>-1.918583</td>\n",
       "      <td>1.469552</td>\n",
       "      <td>a</td>\n",
       "      <td>two</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.338384</td>\n",
       "      <td>-0.387233</td>\n",
       "      <td>b</td>\n",
       "      <td>one</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>-0.981380</td>\n",
       "      <td>1.713030</td>\n",
       "      <td>b</td>\n",
       "      <td>two</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>-0.243838</td>\n",
       "      <td>0.547075</td>\n",
       "      <td>a</td>\n",
       "      <td>one</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      data1     data2 key1 key2\n",
       "0 -0.453110  2.338225    a  one\n",
       "1 -1.918583  1.469552    a  two\n",
       "2  0.338384 -0.387233    b  one\n",
       "3 -0.981380  1.713030    b  two\n",
       "4 -0.243838  0.547075    a  one"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>data1</th>\n",
       "      <th>data2</th>\n",
       "      <th>key2</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>key1</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>a</th>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>b</th>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      data1  data2  key2\n",
       "key1                    \n",
       "a         3      3     3\n",
       "b         2      2     2"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df2.groupby(['key1']).count()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "data1    3\n",
       "data2    3\n",
       "key2     3\n",
       "Name: a, dtype: int64"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df2.groupby(['key1']).count().iloc[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "data1    3\n",
       "data2    3\n",
       "key2     3\n",
       "Name: a, dtype: int64"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df2.groupby(['key1']).count().loc['a']"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 使用iloc获取Dataframe的某行某列"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>data1</th>\n",
       "      <th>data2</th>\n",
       "      <th>key1</th>\n",
       "      <th>key2</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>-0.453110</td>\n",
       "      <td>2.338225</td>\n",
       "      <td>a</td>\n",
       "      <td>one</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>-1.918583</td>\n",
       "      <td>1.469552</td>\n",
       "      <td>a</td>\n",
       "      <td>two</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.338384</td>\n",
       "      <td>-0.387233</td>\n",
       "      <td>b</td>\n",
       "      <td>one</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>-0.981380</td>\n",
       "      <td>1.713030</td>\n",
       "      <td>b</td>\n",
       "      <td>two</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>-0.243838</td>\n",
       "      <td>0.547075</td>\n",
       "      <td>a</td>\n",
       "      <td>one</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      data1     data2 key1 key2\n",
       "0 -0.453110  2.338225    a  one\n",
       "1 -1.918583  1.469552    a  two\n",
       "2  0.338384 -0.387233    b  one\n",
       "3 -0.981380  1.713030    b  two\n",
       "4 -0.243838  0.547075    a  one"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0   -0.453110\n",
       "1   -1.918583\n",
       "2    0.338384\n",
       "3   -0.981380\n",
       "4   -0.243838\n",
       "Name: data1, dtype: float64"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#第1列\n",
    "df2.iloc[:,0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'two'"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df2.iloc[1,3]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>data1</th>\n",
       "      <th>data2</th>\n",
       "      <th>key1</th>\n",
       "      <th>key2</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>-0.453110</td>\n",
       "      <td>2.338225</td>\n",
       "      <td>a</td>\n",
       "      <td>one</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>-1.918583</td>\n",
       "      <td>1.469552</td>\n",
       "      <td>a</td>\n",
       "      <td>two</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      data1     data2 key1 key2\n",
       "0 -0.453110  2.338225    a  one\n",
       "1 -1.918583  1.469552    a  two"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#Array slice\n",
    "df2.iloc[:2]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>data1</th>\n",
       "      <th>data2</th>\n",
       "      <th>key1</th>\n",
       "      <th>key2</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>-0.453110</td>\n",
       "      <td>2.338225</td>\n",
       "      <td>a</td>\n",
       "      <td>one</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>-1.918583</td>\n",
       "      <td>1.469552</td>\n",
       "      <td>a</td>\n",
       "      <td>two</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.338384</td>\n",
       "      <td>-0.387233</td>\n",
       "      <td>b</td>\n",
       "      <td>one</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>-0.981380</td>\n",
       "      <td>1.713030</td>\n",
       "      <td>b</td>\n",
       "      <td>two</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      data1     data2 key1 key2\n",
       "0 -0.453110  2.338225    a  one\n",
       "1 -1.918583  1.469552    a  two\n",
       "2  0.338384 -0.387233    b  one\n",
       "3 -0.981380  1.713030    b  two"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df2.iloc[0:-1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>key1</th>\n",
       "      <th>key2</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>a</td>\n",
       "      <td>one</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>a</td>\n",
       "      <td>two</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  key1 key2\n",
       "0    a  one\n",
       "1    a  two"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#打印前两行和后2列\n",
    "df2.iloc[:2, -2:]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 数据的修改"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### .at[]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>data1</th>\n",
       "      <th>data2</th>\n",
       "      <th>key1</th>\n",
       "      <th>key2</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>-0.453110</td>\n",
       "      <td>2.338225</td>\n",
       "      <td>a</td>\n",
       "      <td>one</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2.000000</td>\n",
       "      <td>1.469552</td>\n",
       "      <td>a</td>\n",
       "      <td>two</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.338384</td>\n",
       "      <td>-0.387233</td>\n",
       "      <td>b</td>\n",
       "      <td>one</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>-0.981380</td>\n",
       "      <td>1.713030</td>\n",
       "      <td>b</td>\n",
       "      <td>two</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>-0.243838</td>\n",
       "      <td>0.547075</td>\n",
       "      <td>a</td>\n",
       "      <td>one</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      data1     data2 key1 key2\n",
       "0 -0.453110  2.338225    a  one\n",
       "1  2.000000  1.469552    a  two\n",
       "2  0.338384 -0.387233    b  one\n",
       "3 -0.981380  1.713030    b  two\n",
       "4 -0.243838  0.547075    a  one"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df2.at[1,'data1']=2\n",
    "df2"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### .iat[]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>data1</th>\n",
       "      <th>data2</th>\n",
       "      <th>key1</th>\n",
       "      <th>key2</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>-0.453110</td>\n",
       "      <td>2.338225</td>\n",
       "      <td>a</td>\n",
       "      <td>one</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2.000000</td>\n",
       "      <td>-2.000000</td>\n",
       "      <td>a</td>\n",
       "      <td>two</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.338384</td>\n",
       "      <td>-0.387233</td>\n",
       "      <td>b</td>\n",
       "      <td>one</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>-0.981380</td>\n",
       "      <td>1.713030</td>\n",
       "      <td>b</td>\n",
       "      <td>two</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>-0.243838</td>\n",
       "      <td>0.547075</td>\n",
       "      <td>a</td>\n",
       "      <td>one</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      data1     data2 key1 key2\n",
       "0 -0.453110  2.338225    a  one\n",
       "1  2.000000 -2.000000    a  two\n",
       "2  0.338384 -0.387233    b  one\n",
       "3 -0.981380  1.713030    b  two\n",
       "4 -0.243838  0.547075    a  one"
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df2.iat[1,1] = -2.0\n",
    "df2"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 增加行\n",
    "\n",
    ".append()\n",
    "\n",
    "对于dataframe，每一行事实上代表着一个对象/向量，对于对象/向量的表示，使用json"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>data1</th>\n",
       "      <th>data2</th>\n",
       "      <th>key1</th>\n",
       "      <th>key2</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>-1.156629</td>\n",
       "      <td>-0.479173</td>\n",
       "      <td>a</td>\n",
       "      <td>one</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1.252690</td>\n",
       "      <td>1.652271</td>\n",
       "      <td>a</td>\n",
       "      <td>two</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.812755</td>\n",
       "      <td>1.407725</td>\n",
       "      <td>b</td>\n",
       "      <td>one</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>-1.132984</td>\n",
       "      <td>-0.462333</td>\n",
       "      <td>b</td>\n",
       "      <td>two</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1.173084</td>\n",
       "      <td>-1.641891</td>\n",
       "      <td>a</td>\n",
       "      <td>one</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>1.200000</td>\n",
       "      <td>1.400000</td>\n",
       "      <td>b</td>\n",
       "      <td>two</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      data1     data2 key1 key2\n",
       "0 -1.156629 -0.479173    a  one\n",
       "1  1.252690  1.652271    a  two\n",
       "2  1.812755  1.407725    b  one\n",
       "3 -1.132984 -0.462333    b  two\n",
       "4  1.173084 -1.641891    a  one\n",
       "5  1.200000  1.400000    b  two"
      ]
     },
     "execution_count": 70,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df3=df2.append({'data1':1.2,'data2':1.4,'key1':'b','key2':'two'},ignore_index=True)\n",
    "df3"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>data1</th>\n",
       "      <th>data2</th>\n",
       "      <th>key1</th>\n",
       "      <th>key2</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>-1.156629</td>\n",
       "      <td>-0.479173</td>\n",
       "      <td>a</td>\n",
       "      <td>one</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1.252690</td>\n",
       "      <td>1.652271</td>\n",
       "      <td>a</td>\n",
       "      <td>two</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.812755</td>\n",
       "      <td>1.407725</td>\n",
       "      <td>b</td>\n",
       "      <td>one</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>-1.132984</td>\n",
       "      <td>-0.462333</td>\n",
       "      <td>b</td>\n",
       "      <td>two</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1.173084</td>\n",
       "      <td>-1.641891</td>\n",
       "      <td>a</td>\n",
       "      <td>one</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      data1     data2 key1 key2\n",
       "0 -1.156629 -0.479173    a  one\n",
       "1  1.252690  1.652271    a  two\n",
       "2  1.812755  1.407725    b  one\n",
       "3 -1.132984 -0.462333    b  two\n",
       "4  1.173084 -1.641891    a  one"
      ]
     },
     "execution_count": 71,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>data1</th>\n",
       "      <th>data2</th>\n",
       "      <th>key1</th>\n",
       "      <th>key2</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>-1.156629</td>\n",
       "      <td>-0.479173</td>\n",
       "      <td>a</td>\n",
       "      <td>one</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1.252690</td>\n",
       "      <td>1.652271</td>\n",
       "      <td>a</td>\n",
       "      <td>two</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.812755</td>\n",
       "      <td>1.407725</td>\n",
       "      <td>b</td>\n",
       "      <td>one</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>-1.132984</td>\n",
       "      <td>-0.462333</td>\n",
       "      <td>b</td>\n",
       "      <td>two</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1.173084</td>\n",
       "      <td>-1.641891</td>\n",
       "      <td>a</td>\n",
       "      <td>one</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>2.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>c</td>\n",
       "      <td>three</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      data1     data2 key1   key2\n",
       "0 -1.156629 -0.479173    a    one\n",
       "1  1.252690  1.652271    a    two\n",
       "2  1.812755  1.407725    b    one\n",
       "3 -1.132984 -0.462333    b    two\n",
       "4  1.173084 -1.641891    a    one\n",
       "5  2.000000  1.000000    c  three"
      ]
     },
     "execution_count": 72,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 修改第6行\n",
    "df3.loc[5]=[2,1, 'c','three']\n",
    "df3"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 增加列\n",
    ".assign()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>data1</th>\n",
       "      <th>data2</th>\n",
       "      <th>key1</th>\n",
       "      <th>key2</th>\n",
       "      <th>key3</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>-1.156629</td>\n",
       "      <td>-0.479173</td>\n",
       "      <td>a</td>\n",
       "      <td>one</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1.252690</td>\n",
       "      <td>1.652271</td>\n",
       "      <td>a</td>\n",
       "      <td>two</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.812755</td>\n",
       "      <td>1.407725</td>\n",
       "      <td>b</td>\n",
       "      <td>one</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>-1.132984</td>\n",
       "      <td>-0.462333</td>\n",
       "      <td>b</td>\n",
       "      <td>two</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1.173084</td>\n",
       "      <td>-1.641891</td>\n",
       "      <td>a</td>\n",
       "      <td>one</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>2.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>c</td>\n",
       "      <td>three</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      data1     data2 key1   key2  key3\n",
       "0 -1.156629 -0.479173    a    one     1\n",
       "1  1.252690  1.652271    a    two     2\n",
       "2  1.812755  1.407725    b    one     3\n",
       "3 -1.132984 -0.462333    b    two     4\n",
       "4  1.173084 -1.641891    a    one     5\n",
       "5  2.000000  1.000000    c  three     6"
      ]
     },
     "execution_count": 73,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df4=df3.assign(key3=[1,2,3,4,5,6])\n",
    "df4"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>data1</th>\n",
       "      <th>data2</th>\n",
       "      <th>key1</th>\n",
       "      <th>key2</th>\n",
       "      <th>key3</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>-1.156629</td>\n",
       "      <td>-0.479173</td>\n",
       "      <td>a</td>\n",
       "      <td>one</td>\n",
       "      <td>0.140732</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1.252690</td>\n",
       "      <td>1.652271</td>\n",
       "      <td>a</td>\n",
       "      <td>two</td>\n",
       "      <td>1.357048</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.812755</td>\n",
       "      <td>1.407725</td>\n",
       "      <td>b</td>\n",
       "      <td>one</td>\n",
       "      <td>-1.065623</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>-1.132984</td>\n",
       "      <td>-0.462333</td>\n",
       "      <td>b</td>\n",
       "      <td>two</td>\n",
       "      <td>-0.589690</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1.173084</td>\n",
       "      <td>-1.641891</td>\n",
       "      <td>a</td>\n",
       "      <td>one</td>\n",
       "      <td>0.117112</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>2.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>c</td>\n",
       "      <td>three</td>\n",
       "      <td>-0.683054</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      data1     data2 key1   key2      key3\n",
       "0 -1.156629 -0.479173    a    one  0.140732\n",
       "1  1.252690  1.652271    a    two  1.357048\n",
       "2  1.812755  1.407725    b    one -1.065623\n",
       "3 -1.132984 -0.462333    b    two -0.589690\n",
       "4  1.173084 -1.641891    a    one  0.117112\n",
       "5  2.000000  1.000000    c  three -0.683054"
      ]
     },
     "execution_count": 74,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 修改1列\n",
    "df4.loc[:,'key3']=np.random.randn(6)\n",
    "df4"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# DataFrame自带绘图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>name</th>\n",
       "      <th>reports</th>\n",
       "      <th>year</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Cochice</th>\n",
       "      <td>Jason</td>\n",
       "      <td>4</td>\n",
       "      <td>2012</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Pima</th>\n",
       "      <td>Molly</td>\n",
       "      <td>24</td>\n",
       "      <td>2012</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Santa Cruz</th>\n",
       "      <td>Tina</td>\n",
       "      <td>31</td>\n",
       "      <td>2013</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Maricopa</th>\n",
       "      <td>Jake</td>\n",
       "      <td>2</td>\n",
       "      <td>2014</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Yuma</th>\n",
       "      <td>Amy</td>\n",
       "      <td>3</td>\n",
       "      <td>2014</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "             name  reports  year\n",
       "Cochice     Jason        4  2012\n",
       "Pima        Molly       24  2012\n",
       "Santa Cruz   Tina       31  2013\n",
       "Maricopa     Jake        2  2014\n",
       "Yuma          Amy        3  2014"
      ]
     },
     "execution_count": 75,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 发表论文篇数\n",
    "data3 = {'name': ['Jason', 'Molly', 'Tina', 'Jake', 'Amy'], \n",
    "        'year': [2012, 2012, 2013, 2014, 2014], \n",
    "        'reports': [4, 24, 31, 2, 3]}\n",
    "df3 = pd.DataFrame(data3, index = ['Cochice', 'Pima', 'Santa Cruz', 'Maricopa', 'Yuma'])\n",
    "df3"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Cochice        4\n",
       "Pima          24\n",
       "Santa Cruz    31\n",
       "Maricopa       2\n",
       "Yuma           3\n",
       "Name: reports, dtype: int64"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df3['reports']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x11761b978>"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXQAAAEoCAYAAABILwrfAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4xLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvAOZPmwAAFMlJREFUeJzt3X2wbXV93/H3x8tjggqEM5Sq4zVITbAgmivR8aEgsUFJVByKkikSo0VTaDTjTKV2HPFhDGrUNjYxQgCxRZQUH4ihKkFCsBrMBYF7kVgeCo0E5RjjQzRRgW//WOvce7iec88+j+uc33q/ZvbsvX5r7bu/Z999Pue31/qt30pVIUna+B42dAGSpJVhoEtSIwx0SWqEgS5JjTDQJakRBrokNcJAl6RGGOiS1AgDXZIascdavthBBx1UmzdvXsuXlKQN7/rrr/9mVU0ttN2aBvrmzZvZunXrWr6kJG14Se6eZDt3uUhSIwx0SWqEgS5JjTDQJakRBrokNcJAl6RGGOiS1AgDXZIasaYnFkmr5YiLjhi6BLadtm3oEjRy9tAlqREGuiQ1wkCXpEYsGOhJ9knypSQ3JbklyZv79scluS7J7Uk+mmSv1S9XkjSfSXroPwSeU1VPAo4Cjk/yNOAdwHur6vHA3wOvWL0yJUkLWTDQq/MP/eKe/a2A5wD/s2+/CHjRqlQoSZrIRPvQk2xKciNwH3AlcAfw7aq6v9/ka8Cj5nnu6Um2Jtk6PT29EjVLkuYwUaBX1QNVdRTwaOBo4OcmfYGqOreqtlTVlqmpBS+4IUlaokWNcqmqbwNXA08H9k8yc2LSo4F7Vrg2SdIiTDLKZSrJ/v3jfYHnArfSBftJ/WanAZ9crSIlSQub5NT/Q4CLkmyi+wNwaVV9KslXgI8keRvwZeD8VaxTkrSABQO9qm4GnjxH+510+9MlSeuAZ4pKUiMMdElqhIEuSY0w0CWpEQa6JDXCQJekRhjoktQIA12SGmGgS1IjDHRJaoSBLkmNMNAlqREGuiQ1wkCXpEYY6JLUCANdkhphoEtSIwx0SWqEgS5JjTDQJakRBrokNcJAl6RGGOiS1AgDXZIasWCgJ3lMkquTfCXJLUle07efneSeJDf2t+evfrmSpPnsMcE29wOvq6obkjwcuD7Jlf2691bV765eeZKkSS0Y6FV1L3Bv//h7SW4FHrXahUmSFmdR+9CTbAaeDFzXN52Z5OYkFyQ5YJ7nnJ5ka5Kt09PTyypWkjS/iQM9yX7AZcBrq+q7wPuBQ4Gj6Hrw757reVV1blVtqaotU1NTK1CyJGkuEwV6kj3pwvziqvoYQFV9o6oeqKoHgfOAo1evTEnSQiYZ5RLgfODWqnrPrPZDZm12IrB95cuTJE1qklEuzwBOBbYlubFvewNwSpKjgALuAl61KhVKkiYyySiXzwOZY9UVK1+OJGmpPFNUkhoxyS4XrVdnP3LoCuDs7wxdgaSePXRJaoSBLkmNMNAlqREGuiQ1wkCXpEYY6JLUCANdkhphoEtSIwx0SWqEgS5JjTDQJakRBrokNcJAl6RGGOiS1AgDXZIaYaBLUiMMdElqhIEuSY0w0CWpEQa6JDXCQJekRhjoktQIA12SGrFgoCd5TJKrk3wlyS1JXtO3H5jkyiS39fcHrH65kqT5TNJDvx94XVUdDjwNOCPJ4cBZwFVVdRhwVb8sSRrIgoFeVfdW1Q394+8BtwKPAl4IXNRvdhHwotUqUpK0sEXtQ0+yGXgycB1wcFXd26/6OnDwPM85PcnWJFunp6eXUaokaXcmDvQk+wGXAa+tqu/OXldVBdRcz6uqc6tqS1VtmZqaWlaxkqT5TRToSfakC/OLq+pjffM3khzSrz8EuG91SpQkTWKSUS4Bzgdurar3zFp1OXBa//g04JMrX54kaVJ7TLDNM4BTgW1Jbuzb3gCcA1ya5BXA3cDJq1OiJGkSCwZ6VX0eyDyrj1vZciRJS+WZopLUCANdkhphoEtSIwx0SWqEgS5JjTDQJakRBrokNcJAl6RGGOiS1AgDXZIaYaBLUiMMdElqhIEuSY0w0CWpEQa6JDXCQJekRhjoktQIA12SGmGgS1IjDHRJaoSBLkmNMNAlqREGuiQ1wkCXpEYsGOhJLkhyX5Lts9rOTnJPkhv72/NXt0xJ0kIm6aF/EDh+jvb3VtVR/e2KlS1LkrRYCwZ6Vf0F8K01qEWStAzL2Yd+ZpKb+10yB8y3UZLTk2xNsnV6enoZLydJ2p2lBvr7gUOBo4B7gXfPt2FVnVtVW6pqy9TU1BJfTpK0kCUFelV9o6oeqKoHgfOAo1e2LEnSYi0p0JMcMmvxRGD7fNtKktbGHgttkOQS4BjgoCRfA94EHJPkKKCAu4BXrWKNkqQJLBjoVXXKHM3nr0ItkqRl8ExRSWqEgS5JjTDQJakRBrokNcJAl6RGGOiS1AgDXZIaYaBLUiMMdElqhIEuSY0w0CWpEQa6JDXCQJekRhjoktQIA12SGmGgS1IjDHRJaoSBLkmNMNAlqREGuiQ1wkCXpEYY6JLUCANdkhphoEtSIxYM9CQXJLkvyfZZbQcmuTLJbf39AatbpiRpIZP00D8IHL9L21nAVVV1GHBVvyxJGtCCgV5VfwF8a5fmFwIX9Y8vAl60wnVJkhZpqfvQD66qe/vHXwcOXqF6JElLtOyDolVVQM23PsnpSbYm2To9Pb3cl5MkzWOpgf6NJIcA9Pf3zbdhVZ1bVVuqasvU1NQSX06StJClBvrlwGn949OAT65MOZKkpZpk2OIlwBeBJyT5WpJXAOcAz01yG/BL/bIkaUB7LLRBVZ0yz6rjVrgWSdIyeKaoJDXCQJekRhjoktQIA12SGmGgS1IjDHRJaoSBLkmNMNAlqREGuiQ1wkCXpEYY6JLUCANdkhphoEtSIwx0SWqEgS5JjTDQJakRBrokNcJAl6RGGOiS1AgDXZIaYaBLUiMMdElqhIEuSY0w0CWpEQa6JDVij+U8OcldwPeAB4D7q2rLShQlSVq8ZQV679iq+uYK/DuSpGVwl4skNWK5gV7AZ5Ncn+T0uTZIcnqSrUm2Tk9PL/PlJEnzWW6gP7OqngI8DzgjybN33aCqzq2qLVW1ZWpqapkvJ0maz7ICvaru6e/vAz4OHL0SRUmSFm/JgZ7kp5M8fOYx8K+B7StVmCRpcZYzyuVg4ONJZv6dD1fVp1ekKknSoi050KvqTuBJK1iLJGkZHLYoSY1YiROL1tTms/506BK465wThi5Bkn6CPXRJaoSBLkmNMNAlqREGuiQ1wkCXpEZsuFEukjSp33/154YugTP+8Dlr9lr20CWpEQa6JDXCQJekRhjoktQIA12SGmGgS1IjHLYoNebWn/v5oUvg5//61qFLGCV76JLUCANdkhphoEtSIwx0SWqEgS5JjTDQJakRBrokNcJAl6RGGOiS1IhlBXqS45N8NcntSc5aqaIkSYu35EBPsgn4feB5wOHAKUkOX6nCJEmLs5we+tHA7VV1Z1X9CPgI8MKVKUuStFipqqU9MTkJOL6qXtkvnwr8YlWduct2pwOn94tPAL669HJXxEHANweuYb3wvdjJ92In34ud1st78diqmlpoo1WfbbGqzgXOXe3XmVSSrVW1Zeg61gPfi518L3byvdhpo70Xy9nlcg/wmFnLj+7bJEkDWE6g/xVwWJLHJdkLeClw+cqUJUlarCXvcqmq+5OcCXwG2ARcUFW3rFhlq2fd7P5ZB3wvdvK92Mn3YqcN9V4s+aCoJGl98UxRSWqEgS5JjTDQJakRqz4OXZI2kiSPBA4F9plpq6ovDFfR5EbRQ0/yU0nemOS8fvmwJL8ydF0aTpIHkpyTJLPabhiyJg0vyW8AXwA+B7yjv3/7oEUtwlh66BcC1wNP75fvAf4Y+NRgFQ0kyRTweroJ1Wb3QJ4zWFHDuIWuQ/PZJC+pqm8BWeA5zfJzscNvA1uAL1bVs5I8EXjLwDVNbBQ9dODQqnon8GOAqvoB4/3lvRi4FXgc8GbgLrqTxMbm/qr6j8AfAdcm+QVgzGN4/Vx0/qmq/hEgyV79uTVPGLimiY0l0H+UZF/6X9gkhwI/HLakwfxMVZ0P/Liqrqmq3wDG1guD/g96VX0UeAndt7ifHbSiYfm56NybZH/gT4DPJLkM+NrANU1sLLtc3gR8GnhMkouBZwC/PmhFw/lxf39vkhOAvwUOHLCeobxy5kFVbU/yLMY9/bOfC6CqXtA/fGOS44BHAn86YEmLMpozRZP8DPA0up7ZX1bVepgSc831B4OvpZtY7X3AI4A3V9Wo5uFJ8rK52qvqQ2tdy3rg52KnJI+gm2xwR4e3qm4erqLJjSLQk5wIfK6qvtMv7w8cU1WfGLYyDSXJ+2Yt7gMcB9xQVScNVJLWgSRvort+w13Ag31zVdWzBytqEcYS6DdW1VG7tH25qp48VE1DSfI44D8Am3loD+QF8z1nDPo/8h+pquOHrmUISX4W+K90I8EeBL4I/HZV3TloYWssyVeBI6tqQx5jG8s+9LkO/o7lZ9/VJ4Dz6Q76PLjAtmPyfboRHmP1YbprBJ/YL78UuAT4xcEqGsYtwMPZoIMmxtJDvwD4Nt0HFuAM4MCq+vXBihpIkuuqamy/pD8hyZ+wc5jiw+jGX19aVWcNV9VwktxcVUfu0nZTVT1pqJqG0A9f/QRwM7NCvapePFhRizCWQP9p4I3AL/VNVwJvq6rvD1fVMJL8GnAY8Fke+oEd1VmSSf7VrMX7gburasMMT1tpSd4B/D3dxd6LbijnAcC7APoTr5qXZDtwAbCNWd9gq+qqwYpahFEEunZK8jvAqcAdPPSgz2jGHCfZBPxZVR07dC3rRZL/u5vVVVWjGKOf5K+q6qlD17FUTQd6kv9SVa/d5ev1DmM8EJjkduDwqvrR0LUMKclVwItnRj5JAEneDfyA7nKas7/Bbohhi60fGPzv/f3vDlrF+rId2B+4b+hCBvYPwLYkV9IdEAWgqn5ruJKGk2RP4DeBmeF5fw58oKp+PO+T2nR0f3/MrLZi5/uyrjXdQ9dPSvLnwJF083TM7oGM6ttKktPmaq+qi9a6lvUgyR8BewIzP/+pwANV9cr5n6X1ZhSBnuQZwNnAY+m+lYQR7RecbZeDgTtU1TVrXcsQ+lkFp6rqK7u0PxG4r6qmh6lsWHONaBnpKJc3zNVeVRtiCt3Wd7nMOJ9uWszrgQcGrmVQYwnu3Xgf8AdztB8I/Gfg19a2nHXjgSSHVtUdsONEozH+rsz+mfcBTqAbm74hjKWHPvqx10k+X1XPTPI9HnqAeObbyiMGKm1NJdlaVVvmWbe9qv7lWte0HvQTUV0I3En3mXgs8PKqunrQwgaWZB/g01V1zNC1TKLpQE/ylP7hycAm4GOMeOy1ulO7q2rO+a13t24MkuzNzrm/v7pRT39fSf3l6K6vqscPXcskWt/l8u5dlmf3zIoRzffc9zReDTye7iy4C6rq/mGrGsTtSZ5fVVfMbkzyPLre6SglOQO4eGZ4XpIDkryiqubaPdWsJF9m5zfYTcAhbKBL0DXdQ9dOST5KN+f1tcDz6M6MfM2wVa29JIfRzW/9BbpjKtD9oX868CtV9X+Gqm1IY5/ALskVwL+nC/EZ9wNf30jfVEZxxaIkb+9n05tZPiDJ24asaQCHV9W/raoPACcBzxq6oCFU1W3AEcA1dDNObu4fHznWMO9t2uWC2ZuAvQasZ61dSDcdxkuB/1dVd1TV3RspzGEkPfS5ehpJbqiqp8z3nNbs+vOO7efX7iV5F92B0A/0Ta8C/qaqXjdcVWsryX50cz4dT3dS4uy5XN4zVF2L0fo+9Bmbkuw989e2v77o3gPXtNaelOS7/eMA+/bLoxrlonm9ni7Ef7NfvpLuAtpj8iO6s4b3pptCd8NNLz2WHvrrgV+l+1oF8HLg8qp653BVSVovkhwPvIduDpe3VNUPBi5pSUYR6LDjP2zH9LlV9Zkh65HWgySXVtXJSbYx9wR2R87xtOYkuRZ4dVVtmJOI5jKmQD+YbuKdAr5UVWOfnGrU+tEuv0N3YYt9ZtrHNh1EkkOq6t4kj51rfVXdvdY1aenGMsrlZOBLdKM7TgauS+LFgMftQuD9dEPTjgU+BPyPQSsaQB/mm4AP9qM6HnIbuj4tzih66EluAp470yvvJ2j6s7FNPKSdklxfVb+QZFtVHTG7bejahuD88G0YyyiXh+2yi+XvGMm3E83rh0keBtyW5EzgHmC/gWsakvPDN2Asgf7pJJ+hu4o5dNdLvGI326t9rwF+Cvgt4K10u11eNmhFw/pYf9MG1vQulySPBw6uqv+d5MXAM/tV36abt+KO4arTkJL8m6r644XapI2k9UD/FPCfqmrbLu1HAG+vql8dpjINba4zZcd89qyjftrQ+i6Xg3cNc4Cq2pZk89qXo6H1syo+H3hUkt+bteoRdCNexupC4E3Ae+l2P70cjzNtOK3/h+2/m3X7rlkVWk/+FtgK/BPdbIszt8uBXx6wrqHtW1VX0X1rv7uqzqa7Wo82kNZ76FuT/LuqOm92Y5JXsnPqVI1IVd0E3JTkwyO8ov3uOOqnAa3vQz8Y+DjdpDuz577eCzixqr4+VG0alhcOf6gkTwVupftW+1bgkcA7q+ovBy1Mi9J0oM9Iciwwc63IW6rqc0PWo+El+WvmuHB4Vf3dYEVJyzSKQJd25YXDO0ku3936qnrBWtWi5TPQNUpJzsELh5NkGvgbupPurqPb9bRDVV0zRF1aGgNdo5Tk6jmaq6pGc+Fw2HGpuecCpwBH0l1v9ZKNPo3sWBnokgBIsjddsL8LeHNV/beBS9IitT5sUZpXkhOAJ/LQMyPfMlxFw+iD/AS6MN8M/B7d6DBtMAa6RinJH9JNznUs3bUzT6KbM39UknyIbgTYFXS98u0Dl6RlcJeLRinJzVV15Kz7/YD/VVXPGrq2tZTkQXZOlzs7DLx4+AZkD11j9Y/9/Q+S/HO6OfIPGbCeQVRV69N/jIqBrrH6VJL96Q4A3kDXOz1v90+R1jd3uWj0+oOC+3j5NW10ft3SqCR5apJ/Nmv5ZcClwFuTHDhcZdLyGegamw/QTdZGkmcD5wAfAr4DnDtgXdKyuQ9dY7Opqr7VP34JcG5VXQZcluTGAeuSls0eusZmU5KZjsxxwOyZN+3gaEPzA6yxuQS4Jsk36YYuXgs7LijuQVFtaI5y0egkeRrdmPPPVtX3+7Z/Aew3ttkW1RYDXZIa4T50SWqEgS5JjTDQJakRBrokNeL/A784H7sdZtfWAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x11a6494a8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "df3['reports'].plot.bar()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "# %matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x11a86b390>"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x11a6bc278>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 绘图过滤离散型数据\n",
    "df3.plot.bar()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>name</th>\n",
       "      <th>reports</th>\n",
       "      <th>year</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Cochice</th>\n",
       "      <td>Jason</td>\n",
       "      <td>4</td>\n",
       "      <td>2012</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Pima</th>\n",
       "      <td>Molly</td>\n",
       "      <td>24</td>\n",
       "      <td>2012</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Santa Cruz</th>\n",
       "      <td>Tina</td>\n",
       "      <td>31</td>\n",
       "      <td>2013</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Maricopa</th>\n",
       "      <td>Jake</td>\n",
       "      <td>2</td>\n",
       "      <td>2014</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Yuma</th>\n",
       "      <td>Amy</td>\n",
       "      <td>3</td>\n",
       "      <td>2014</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "             name  reports  year\n",
       "Cochice     Jason        4  2012\n",
       "Pima        Molly       24  2012\n",
       "Santa Cruz   Tina       31  2013\n",
       "Maricopa     Jake        2  2014\n",
       "Yuma          Amy        3  2014"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df3"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 密度估计\n",
    "\n",
    "核密度估计"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [],
   "source": [
    "import seaborn as sns"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x11cdc6e80>"
      ]
     },
     "execution_count": 76,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x11d04ffd0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.kdeplot(df2['data1'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x11d05bcc0>"
      ]
     },
     "execution_count": 77,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x11d11e208>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.kdeplot(df2['data2'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x11d11e908>"
      ]
     },
     "execution_count": 78,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x11d1b1be0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.kdeplot(df2['data1'])\n",
    "sns.kdeplot(df2['data2'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x11d217518>"
      ]
     },
     "execution_count": 79,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x11d20fef0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.kdeplot(df2['data1'], shade=True, color='r')\n",
    "sns.kdeplot(df2['data2'], shade=True, color='g')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 生成一段数据，并进行核密度估计"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "metadata": {},
   "outputs": [],
   "source": [
    "x=np.random.rand(5000)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x11cefb898>"
      ]
     },
     "execution_count": 67,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x11cdc6e48>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.kdeplot(x, shade=True, color='y')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "numpy.ndarray"
      ]
     },
     "execution_count": 68,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "type(x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.4rc1"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": false,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": true
  },
  "toc-autonumbering": true
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
